Finite impulse response (FIR) filters are commonly used in high speed data communications electronics for reducing error rates in multilevel symbol encoding schemes. Schemes such as pulse amplitude modulation (PAM) and quadrature amplitude modulation (QAM) may have higher error rates for symbols with low signal to noise ratios. A symbol refers to a data pulse on a line. The symbol may have several bits of information encoded within the voltage level and polarity (PAN for example). By using high levels of bit encoding in symbols, lower symbol rates can be used. Lower symbol rates are desirable because of their lower levels of noise.
FIG. 1 shows an example of a symbol pulse. The symbol pulse 102 shows the analog voltage vs. time response of the symbol being driven on the line. In an ideal world, the symbol pulse 102 would look like a square wave. Unfortunately, real pulses have profiles like that shown in FIG. 1. The line is driven so that at time t0 the amplitude of the pulse 102 is about h0. As the pulse 102 is driven back to zero, it still has an amplitude of h1 at time t1. The spacing of times t0 and t1 corresponds with the symbol rate. Thus, the receiver might confuse the pulse 102 amplitude at time t1 with a symbol meant to be valid at time t1, when it was simply the tail end of the pulse 102 meant to be valid at time t0.
FIG. 2 shows an example of two successive four level PAM symbols. Four level PAM usually has an encoding scheme with four different voltage levels: +3, +1, −1, and −3 volts. This scheme gives two bits of encoding. Two successive symbols are shown with their possible waveforms for each pulse, one intended to be valid at time t0 and one at t1. The first symbol has possible pulses peaking at time t0 and has the following possibilities: a +3 pulse 202, a +1 pulse 204, a −1 pulse 206, or a −3 pulse 208. Similarly, the second symbol has possible pulses peaking at time t1 and has the following possibilities: a +3 pulse 210, a +1 pulse 212, a −1 pulse 214, or a −3 pulse 216. One can see that a +3 pulse 202 looks like +3 volts at time t0 and +1 volt at time t1.
FIG. 3 shows an example of a one tap FIR filter. The filter 302 provides a method of determining how much of first symbols tail needs to be removed from the apparent head of a second symbol. Data 303, which may be digital decoded, passes through a delay block 304. The delay block 304 delays the propagation of the data 303 for one period corresponding to the symbol rate. The data 303 then goes into the pulse block 306, where the sign of the data 303 is determined. It is also possible to determine the sign of the data 303 before the pulse block 306 and simply feed the sign of the data to the pulse block 306. The pulse block 306 also receives the sign of the error 308, which is determined by the difference between a symbol pulse and its decoded data at a given clock edge.
The output of a prior art pulse block 306 is the sign of the data 303 multiplied by the sign of the error 308. This output in the up/down pulse, and it is fed into an integrator 310. The integrator multiplies the up/down pulse by a small constant μ and adds that value to the previous filter coefficient to create a new coefficient. The following equation summarizes this:hi+1=hi+(μ*sign(data)*sign(error))Thus, the coefficient of the filter 302 constantly changes based on the sign of the error 308 and the sign of the data 303. The coefficient output of the integrator 310 is multiplied by the delayed data 303 at a multiplier 312. The result is a correction signal 314 that, when added to the symbol signal, ideally cancels any signal portions of previous symbols from a current symbol before the current symbol is decoded. Actual filters 302 may employ more than one tap in order to achieve the desired results.
FIG. 4 shows a chart of a prior art up/down pulse determination scheme. The sign of the data multiplied by the sign of the error determines the sign of the up/down pulse. Unfortunately, this prior art scheme does not work very well for noisy systems and symbols with small signals.
FIG. 5 shows an example of amplitude error and noise for symbols. The symbols 3, 1, −1, and −3 508, 506, 504, 502 respectively each have error distributions in their amplitudes. Also shown is a noise 510 distribution. For symbols with low signal to noise ratios, like symbol 1 506 and symbol −1 504, the noise 510 in the system may disrupt the accuracy of the up/down pulse. This, in turn, may erroneously affect the modification of filter coefficients.
Thus, there is a need for a FIR filter that accounts for low signal to noise ratio symbols when updating filter coefficients.